﻿Imports System.Data.SqlClient
Imports System.Data

Partial Class Sistema_Inicio
    Inherits System.Web.UI.Page
#Region "VariablesDeSguridad"
    Dim PermisoEliminarRemision As Boolean
    Dim PermisoEditarRemision As Boolean
#End Region
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'indentificar los módulos a los que tiene acceso el usuario
        Using bd As New bdSeguridadDataContext
            Dim a = (bd.usp_redirecToModulo(Context.User.Identity.Name)).FirstOrDefault
            If a.CodModulo <> 1 Then
                Response.Redirect(a.url)
            End If
        End Using

        If Page.IsPostBack = False Then

            Using bd As New BdHogaresDataContext
                ' cargar combo de visitas para filtro
                Dim c = From i In bd.Web_Parametros
                          Where (i.Categoria = "visitas")
                          Select i.NombreOpcion, i.ValorOpcion

                ddlvisitaFiltro.DataSource = c
                ddlvisitaFiltro.DataValueField = "NombreOpcion"
                ddlvisitaFiltro.DataTextField = "NombreOpcion"
                ddlvisitaFiltro.DataBind()
                ddlvisitaFiltro.Items.Insert(0, New ListItem("Sin filtro", "0"))
            End Using
            CargarDatos()
            Using bd As New bdReportesDataContext
                grdResultado.DataSource = bd.rpt_encuestasYPersonasDigitadas(Context.User.Identity.Name)
                grdResultado.DataBind()
            End Using
            Using bd As New bdReportesDataContext
                grdejecucionxproyecto.DataSource = bd.USP_calculartiempoejecucionproyectosXnombredeusuario(Context.User.Identity.Name)
                grdejecucionxproyecto.DataBind()
            End Using

            Using bd As New bdReportesDataContext
                grdejecucionLI.DataSource = bd.usp_semaforovisitas(Context.User.Identity.Name)
                grdejecucionLI.DataBind()
            End Using

            Using bd As New bdReportesDataContext
                grdejecucionV1.DataSource = bd.usp_semaforovisitas(Context.User.Identity.Name)
                grdejecucionV1.DataBind()
            End Using

            Using bd As New bdReportesDataContext
                grdejecucionV2.DataSource = bd.usp_semaforovisitas(Context.User.Identity.Name)
                grdejecucionV2.DataBind()
            End Using

            Using bd As New bdReportesDataContext
                grdejecucionV3.DataSource = bd.usp_semaforovisitas(Context.User.Identity.Name)
                grdejecucionV3.DataBind()
            End Using

        End If
    End Sub
    Sub CargarDatos(Optional ByVal pagina As Integer = 1, Optional ByVal ultima As Boolean = False)
        Dim bd As New BdHogaresDataContext

        'cargar combos
        'Cargar combo proyectos:
        Dim u As New Web_Usuario
        Using h As New Helper
            u = h.GetUsuario(Context.User.Identity.Name)
        End Using
        Dim a = From i In bd.Web_Proyectos
                    Where (i.web_Operadore.idOperador = u.IdOperador) Or IsNothing(u.IdOperador)
                    Select i.idProyecto, i.CodigoProyecto
        ddlProyecto.DataSource = a
        ddlProyecto.DataValueField = "idProyecto"
        ddlProyecto.DataTextField = "CodigoProyecto"
        ddlProyecto.DataBind()

        'Cargar Combo Visitas


         Dim b = From i In bd.Web_Parametros
                   Where (i.Categoria = "visitas")
                   Select i.NombreOpcion, i.ValorOpcion

        ddlVisita.DataSource = b
        ddlVisita.DataValueField = "NombreOpcion"
        ddlVisita.DataTextField = "NombreOpcion"
        ddlVisita.DataBind()

       
        'fin cargar combos

        


        'cargar grid de  validacion de datos
        cargarValidaciones()

        Dim registrosXPagina = 20

        Dim mFechaultimavisita As Nullable(Of Date)
        Dim mCodcoba As String
        If String.IsNullOrEmpty(txtUltimaVisita.Text) Then
            mFechaultimavisita = Nothing
        Else
            mFechaultimavisita = CDate(txtUltimaVisita.Text)
        End If

        If String.IsNullOrEmpty(txtCOBA.Text) Then
            mCodcoba = Nothing
        Else
            mCodcoba = txtCOBA.Text
        End If

        Dim familias = bd.usp_listahogaresfiltro(mCodcoba, mFechaultimavisita, Helper.TextotoBD(txtCodigoProyecto.Text), Helper.TextotoBD(txtNombreProyecto.Text), Helper.TextotoBD(txtJefeHogar.Text), Context.User.Identity.Name, ddlvisitaFiltro.SelectedValue)

        If ultima = True Then
            Using cuenta = bd.usp_listahogaresfiltro(mCodcoba, mFechaultimavisita, Helper.TextotoBD(txtCodigoProyecto.Text), Helper.TextotoBD(txtNombreProyecto.Text), Helper.TextotoBD(txtJefeHogar.Text), Context.User.Identity.Name, ddlvisitaFiltro.SelectedValue)
                pagina = Math.Ceiling(cuenta.Count() / registrosXPagina)
            End Using
        End If
        grdResultados.DataSource = familias.Skip((pagina - 1) * registrosXPagina).Take(registrosXPagina)
        grdResultados.DataBind()
        txtPagina.Text = pagina

        Using cuenta = bd.usp_listahogaresfiltro(mCodcoba, mFechaultimavisita, Helper.TextotoBD(txtCodigoProyecto.Text), Helper.TextotoBD(txtNombreProyecto.Text), Helper.TextotoBD(txtJefeHogar.Text), Context.User.Identity.Name, ddlvisitaFiltro.SelectedValue)
            Dim TotalRegistros = cuenta.Count()
            lblpaginas.Text = "Pagina " & pagina & " de " & Math.Ceiling(TotalRegistros / registrosXPagina)
            lblregistros.Text = "Total registros " & TotalRegistros
        End Using

    End Sub

    Protected Sub btnNuenva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNuenva.Click
        Response.Redirect("ModuloHogares.aspx")
    End Sub

    Protected Sub Siguiente_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Siguiente.Click
        CargarDatos(CInt(txtPagina.Text) + 1)
    End Sub

    Protected Sub lnkanterior_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkanterior.Click
        If txtPagina.Text <= 1 Then
            CargarDatos(1)
        Else
            CargarDatos(CInt(txtPagina.Text) - 1)
        End If
    End Sub

    Protected Sub btnira_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnira.Click
        If txtPagina.Text <= 1 Then
            CargarDatos(1)
        Else
            CargarDatos(CInt(txtPagina.Text))
        End If
    End Sub

    Protected Sub lnkprimero_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkprimero.Click
        CargarDatos(1)
    End Sub

    Protected Sub lnkultimo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkultimo.Click
        CargarDatos(1, True)
    End Sub

    Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFiltrar.Click
        CargarDatos()
        btnFiltrar.Focus()
    End Sub

    Protected Sub btnQuitarFiltro_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuitarFiltro.Click
        txtCOBA.Text = ""
        txtUltimaVisita.Text = ""
        txtCodigoProyecto.Text = ""
        txtNombreProyecto.Text = ""
        txtJefeHogar.Text = ""
        ddlvisitaFiltro.SelectedIndex = 0
        CargarDatos()
        btnQuitarFiltro.Focus()
    End Sub

    Sub cargarValidaciones()
        Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("CNNdb").ConnectionString)
            cnn.Open()
            Using cmd As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand("RPTRevision18Consolidacion", cnn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.AddWithValue("@idproyecto", ddlProyecto.SelectedValue)
                cmd.Parameters.AddWithValue("@Visita", ddlVisita.SelectedValue)
                grdValidacion.DataSource = cmd.ExecuteReader
                grdValidacion.DataBind()
            End Using
            cnn.Close()
        End Using

    End Sub
    Protected Sub btnFiltrarValidacion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFiltrarValidacion.Click
        cargarValidaciones()
    End Sub


    Protected Sub grdResultado_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdResultado.RowCommand
        If e.CommandName = "filtrar" Then
            txtCodigoProyecto.Text = e.CommandArgument
            CargarDatos()
            btnFiltrar.Focus()
        End If
    End Sub
End Class

